home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / c / flash-0.4.3.lha / flash-0.4.3 / Lib / matrix.cc < prev    next >
C/C++ Source or Header  |  1999-02-21  |  2KB  |  67 lines

  1. /////////////////////////////////////////////////////////////
  2. // Flash Plugin and Player
  3. // Copyright (C) 1998,1999 Olivier Debon
  4. // 
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the GNU General Public License
  7. // as published by the Free Software Foundation; either version 2
  8. // of the License, or (at your option) any later version.
  9. // 
  10. // This program is distributed in the hope that it will be useful,
  11. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. // GNU General Public License for more details.
  14. // 
  15. // You should have received a copy of the GNU General Public License
  16. // along with this program; if not, write to the Free Software
  17. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  18. // 
  19. ///////////////////////////////////////////////////////////////
  20. //  Author : Olivier Debon  <odebon@club-internet.fr>
  21. //  
  22.  
  23. #include "matrix.h"
  24.  
  25. static char *rcsid = "$Id: matrix.cc,v 1.6 1999/01/31 20:18:39 olivier Exp $";
  26.  
  27. Matrix::Matrix()
  28. {
  29.     a = 1.0;
  30.     d = 1.0;
  31.     b = c = 0.0;
  32.     tx = ty = 0;
  33. }
  34.  
  35. Matrix Matrix::operator*(Matrix m)
  36. {
  37.     Matrix mat;
  38.  
  39.     mat.a = this->a * m.a + this->b * m.c;
  40.     mat.b = this->a * m.b + this->b * m.d;
  41.     mat.c = this->c * m.a + this->d * m.c;
  42.     mat.d = this->c * m.b + this->d * m.d;
  43.  
  44.     mat.tx = this->getX(m.tx,m.ty);
  45.     mat.ty = this->getY(m.tx,m.ty);
  46.  
  47.     return mat;
  48. }
  49.  
  50. Matrix Matrix::invert()
  51. {
  52.     Matrix mat;
  53.     float det;
  54.  
  55.     det = a*d-b*c;
  56.  
  57.     mat.a  = d/det;
  58.     mat.b  = -b/det;
  59.     mat.c  = -c/det;
  60.     mat.d  = a/det;
  61.  
  62.     mat.tx = tx;
  63.     mat.ty = ty;
  64.  
  65.     return mat;
  66. }
  67.